using System;
using System.Collections.Generic;
using System.Linq;

using PMServiceDesk.DataType;
using PMServiceDesk.DataAccess;
using PMServiceDesk.Utils.ManejoDatos;

namespace PMServiceDesk.BusinessLogic
{
    public class RecursoActividadLogic
    {
        #region Variables

        private RecursoActividadData _recursoActividadData;

        #endregion

        #region Constructores

        public RecursoActividadLogic()
        {
            _recursoActividadData = new RecursoActividadData();
        }

        #endregion

        #region Metodos

        public RecursoActividadType CargarPorId(string id)
        {
            _recursoActividadData.FiltrarPorId(id);

            return _recursoActividadData.Cargar();
        }

        public void Grabar(RecursoActividadType recursoActividad)
        {
            _recursoActividadData.Grabar(recursoActividad);
        }

        public void Eliminar(string id)
        {
            _recursoActividadData.Eliminar(id);
        }

        public List<RecursoActividadType> CargarExplorador()
        {

            return _recursoActividadData.CargarListaVista();
        }

        public List<RecursoActividadType> CargarExploradorPaginado(RecursoActividadType registroBusqueda, int paginaActual = 0, int cantidadMostrar = 0, string orderBy = "")
        {
            _recursoActividadData.FiltrarPorActividadId(registroBusqueda.ActividadId);

            return _recursoActividadData.CargarListaVista(paginaActual, cantidadMostrar, orderBy);
        }

        public List<RecursoActividadType> CargarLineaBasePorCodigoCuenta(string proyectoId,string codigoCuenta)
        {
            List<RecursoActividadType> l =  _recursoActividadData.CargarLineaBasePorCodigoCuenta(proyectoId,codigoCuenta);

            ProyectoType proyecto = new ProyectoLogic().CargarPorId(proyectoId);

            foreach (RecursoActividadType r in l)
                r.CostoTotal_Format = proyecto.SimboloMoneda + " " + ConvertFormat.Decimal_To_Char(r.CostoTotal);

            return (
                        from registro in l
                        orderby registro.TipoRecurso
                        select registro
                   ).ToList();
        }

        #endregion
    }
}
